package com.sam.designpattern.command;

/**
 * @Author: Sam
 * @Date: 2022-08-26 16:17
 * @Description: 具体减法命令实现对象
 */
public class SubstractCommand implements Command {

    /**
     * 持有具体执行计算的对象
     */
    private OperationAPi operation = null;

    /**
     * 操作的数据，也就是要减去的数据
     */
    private int opeNum;

    /**
     * 构造方法，传入具体执行计算的对象
     *
     * @param operation 具体执行计算的对象
     * @param opeNum    要减去的数据
     */
    public SubstractCommand(OperationAPi operation, int opeNum) {
        this.operation = operation;
        this.opeNum = opeNum;
    }

    @Override
    public void execute() {
        //转调接收者去真正执行功能，减法命令
        this.operation.substract(opeNum);
    }

    @Override
    public void undo() {
        //命令本身是做减法，那撤销操作就是加法命令
        this.operation.add(opeNum);
    }
}
